package com.abc.tacos.bean;

import lombok.*;

import javax.persistence.*;

/**
 * @author Kar
 * @create 2022-04-13 下午5:26
 */
@Data
// @RequiredArgsConstructor //@Data中已包含
// JPA规范要求该无参构造器的access必须是public或protect的，书中提到这里可以是private的是错误的。
// 因为这个类的变量 id、name 与 type 还未初始化，所以我们还需要把 force 设置为 true，将其初始化为 null。
@NoArgsConstructor(access = AccessLevel.PROTECTED, force = true)
@Entity
public class Ingredient {
    @Id
    private final String id;
    private final String name;
    /**
     * @Enumerated 可选，使用枚举的时候，我们希望数据库中存储的是枚举对应的 String 类型，而不是枚举的索引值
     */
    @Enumerated(EnumType.STRING)
    private final Type type;

    public static enum Type {
        WRAP, PROTEIN, VEGGIES, CHEESE, SAUCE
    }
}
